Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 03.07.2018, 13:43
Кандидат Javascript-наук
Отправить личное сообщение для biryukovm Посмотреть профиль Найти все сообщения от biryukovm
 
Регистрация: 13.12.2013
Сообщений: 110

Как контролировать Ajax
Привет всем может кто подскажет

У меня есть функция внутри нее есть ajax запрос
Функция вызывается кнопкой.

Так вот типа параметра включить и выключить товар. срабатывает скрипт.

Вот что делать если клиент кликает кучу раз и за место 1 запроса отправляется та куча что он накликал

Как сделать так чтоб пока я не получил ответ, нельзя было отправить запрос ajax повторно

Покажите на пальцах
вот мой код
function tovar_fl(val){
        $.ajax({
            type: "POST",
            url: "/js.php",
            data: {"tip": 'tovar_fl', "val": val},
            dataType: "json",
            cache: false,
            success: function(data){
// тут делается подмена html кнопки
            }
        });
}
Ответить с цитированием
  #2 (permalink)  
Старый 03.07.2018, 14:25
Кандидат Javascript-наук
Отправить личное сообщение для biryukovm Посмотреть профиль Найти все сообщения от biryukovm
 
Регистрация: 13.12.2013
Сообщений: 110

Сообщение от Rise Посмотреть сообщение
$.ajax({
    beforeSend: function () {
        $button.prop('disabled', true);
    },
    success: function (data) {
        // ...
    },
    complete: function () {
        $button.prop('disabled', false);
    }
});
Я как понял этот пример если мы используем button а если это тег <a> или тот же <span>
Ответить с цитированием
  #3 (permalink)  
Старый 03.07.2018, 14:30
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от biryukovm Посмотреть сообщение
Я как понял этот пример если мы используем button а если это тег <a> или тот же <span>
можно использовать флажок
var flag =true;

//beforeSend
flag = false; 
//complete
flag = true; 

if(flag){
//ваш аякс
}


или использовать data атрибут
Ответить с цитированием
  #4 (permalink)  
Старый 03.07.2018, 15:09
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,831

Или свойство disabled.
onclick = function() {
    if (this.disabled)
        return;

    this.disabled = true;
    $.post().complete(() => {
        this.disabled = false;
    });
}

Последний раз редактировалось Nexus, 03.07.2018 в 15:11.
Ответить с цитированием
  #5 (permalink)  
Старый 03.07.2018, 15:19
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Nexus,
у 'спана' и 'a' дизейбла быть не должно.
Ответить с цитированием
  #6 (permalink)  
Старый 03.07.2018, 15:34
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,831

j0hnik,
Сообщение от j0hnik
у 'спана' и 'a' дизейбла быть не должно.
Почему?
В W3C Recommendations свойство disabled к названным элементам неприменимо, однако от рекомендации можно отступить, мое мнение.

+ такого подхода в том, что 1 обработчик можно на любые элементы вешать и для input,textarea,button,etc. не нужно будет дополнительные стили писать.

Последний раз редактировалось Nexus, 03.07.2018 в 15:37.
Ответить с цитированием
  #7 (permalink)  
Старый 03.07.2018, 15:57
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Nexus,
не лучше ли заменить на dataset.disabled и код валидный станет?
Ответить с цитированием
  #8 (permalink)  
Старый 03.07.2018, 16:07
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,831

j0hnik, чем лучше?)
Думаю особой разницы нет.
Ответить с цитированием
  #9 (permalink)  
Старый 03.07.2018, 16:08
Аватар для j0hnik
Профессор
Отправить личное сообщение для j0hnik Посмотреть профиль Найти все сообщения от j0hnik
 
Регистрация: 01.12.2016
Сообщений: 3,650

Сообщение от j0hnik
код валидный станет
Ответить с цитированием
  #10 (permalink)  
Старый 03.07.2018, 16:09
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,831

j0hnik, а чем он инвалидный в случае использования свойства disabled?)

ps. ссылка как была HTMLAnchorElement, так и осталась
<a id="a">asd</a>
<script>
	console.log(Object.prototype.toString.call(a));
	a.disabled=true;
	console.log(Object.prototype.toString.call(a));
</script>

Последний раз редактировалось Nexus, 03.07.2018 в 16:16.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
как получить исходный код страницы после ajax lerneree AJAX и COMET 4 28.05.2018 13:53
как передать php массивы через ajax Evsik AJAX и COMET 11 11.07.2015 06:32
Как в обработчик php через Ajax передать несколько значений? Urukhay Общие вопросы Javascript 2 30.08.2014 16:19
Книги по Ajax BaVa Учебные материалы 18 18.08.2013 14:05
Как работает обработчик в файле, подгруженном AJAX SweetySugar AJAX и COMET 1 20.08.2011 17:17